package com.hunttown.mes.common.qcloud.qcloudsms;

import com.github.qcloudsms.SmsMultiSender;
import com.github.qcloudsms.SmsMultiSenderResult;
import com.github.qcloudsms.httpclient.HTTPException;
import org.json.JSONException;

import java.io.IOException;

/**
 * created by wangjunfu on 2019-09-18
 */
public class SmsMultiSend {

    /**
     * 群发短信
     *
     * @param mobile 手机号：{"21212313123", "12345678902", "12345678903"}
     * @param msg    短信内容，如：【腾讯云】您的验证码是: 5678
     */
    public static void SmsSend(Integer appId, String appKey, String[] mobile, String msg) {
        try {
            SmsMultiSender msender = new SmsMultiSender(appId, appKey);

            //参数说明：
            //nationcode：国家（或地区）码（必填）
            //mobile    ：手机号码（必填）
            //extend    ：短信码号扩展号，格式为纯数字串，其他格式无效，默认没有开通。
            //ext       ：用户的 session 内容，腾讯 server 回包中会原样返回，可选字段，不需要时设置为空。
            SmsMultiSenderResult result = msender.send(0, "86", mobile, msg, "", "");

            //result.result：错误码，0表示成功（计费依据），非0表示失败
            //result.errMsg：错误消息，result 非0时的具体错误信息
            System.out.println("发送结果：" + result.result);
            System.out.println("结果信息：" + result.errMsg);

        } catch (HTTPException e) {
            // HTTP响应码错误
            e.printStackTrace();
        } catch (JSONException e) {
            // json解析错误
            e.printStackTrace();
        } catch (IOException e) {
            // 网络IO错误
            e.printStackTrace();
        }
    }

    /**
     * 通过创建好的模板 群发短信
     * 模板在腾讯云管理界面创建
     *
     * @param mobile     手机号
     * @param params     参数，要与模板中的数量一致
     * @param templateId 模板ID
     * @param smsSign    签名参数，未提供或者为空时，会使用默认签名发送短信
     */
    public static void sendSmsByTemplete(Integer appId, String appKey, String[] mobile, String[] params, Integer templateId, String smsSign) {
        try {
            SmsMultiSender msender = new SmsMultiSender(appId, appKey);

            //参数说明：
            //nationcode：国家（或地区）码（必填）
            //mobile    ：手机号码（必填）
            //extend    ：短信码号扩展号，格式为纯数字串，其他格式无效，默认没有开通。
            //ext       ：用户的 session 内容，腾讯 server 回包中会原样返回，可选字段，不需要时设置为空。
            SmsMultiSenderResult result = msender.sendWithParam("86", mobile, templateId, params, smsSign, "", "");

            //result.result：错误码，0表示成功（计费依据），非0表示失败
            //result.errMsg：错误消息，result 非0时的具体错误信息
            System.out.println("发送结果：" + result.result);
            System.out.println("结果信息：" + result.errMsg);

        } catch (HTTPException e) {
            // HTTP响应码错误
            e.printStackTrace();
        } catch (JSONException e) {
            // json解析错误
            e.printStackTrace();
        } catch (IOException e) {
            // 网络IO错误
            e.printStackTrace();
        }
    }
}
